From e790efba8aa1393c27d81bb39df0c243ae4d6c0f Mon Sep 17 00:00:00 2001 From: Steven Hand Date: Fri, 22 Sep 2006 14:57:19 +0100 Subject: [PATCH] Add mmio emulation of opcodes 0x3A and 0x85 for SMP W2K3 installation. Signed-off-by: Qing He Signed-off-by: Steven Hand --- xen/arch/x86/hvm/platform.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/xen/arch/x86/hvm/platform.c b/xen/arch/x86/hvm/platform.c index 0e4ac486b7..8f42930e38 100644 --- a/xen/arch/x86/hvm/platform.c +++ b/xen/arch/x86/hvm/platform.c @@ -416,6 +416,11 @@ static int hvm_decode(int realmode, unsigned char *opcode, struct instruction *i GET_OP_SIZE_FOR_NONEBYTE(instr->op_size); return reg_mem(instr->op_size, opcode, instr, rex); + case 0x3A: /* cmp r8, r8/m8 */ + instr->instr = INSTR_CMP; + GET_OP_SIZE_FOR_BYTE(instr->op_size); + return reg_mem(instr->op_size, opcode, instr, rex); + case 0x3B: /* cmp m32/16, r32/16 */ instr->instr = INSTR_CMP; GET_OP_SIZE_FOR_NONEBYTE(instr->op_size); @@ -471,6 +476,11 @@ static int hvm_decode(int realmode, unsigned char *opcode, struct instruction *i GET_OP_SIZE_FOR_BYTE(size_reg); return mem_reg(size_reg, opcode, instr, rex); + case 0x85: /* text m16/32, r16/32 */ + instr->instr = INSTR_TEST; + GET_OP_SIZE_FOR_NONEBYTE(instr->op_size); + return mem_reg(instr->op_size, opcode, instr, rex); + case 0x87: /* xchg {r/m16|r/m32}, {m/r16|m/r32} */ instr->instr = INSTR_XCHG; GET_OP_SIZE_FOR_NONEBYTE(instr->op_size); -- 2.30.2